import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

@Slf4j
public class Temp {

    @Test
    public void testBitMove() {
        int a = 8; // 二进制表示为 0000 1000 //00000000000000000000000000001000
        int b = -8; // 二进制表示为 1111 1000（负数的二进制补码形式）11111111111111111111111111111000

        // 正常右移
        System.out.println("a >> 2: " + (a >> 2)); // 结果为 2 (二进制为 0000 0010)
        System.out.println("b >> 2: " + (b >> 2)); // 结果为 -2 (二进制为 11111111111111111111111111111110)

        // 无符号右移
        System.out.println("a >>>: " + (a >>> 2)); // 结果为 2 (二进制为 0000 0010)
        System.out.println("b >>>: " + (b >>> 2)); // 结果为 1073741822 (二进制为 00111111111111111111111111111110)

        System.out.println("a <<: " + (a << 2)); // 结果为 32
        System.out.println("b <<: " + (b << 2)); // 结果为 -32
    }

    @Test
    public void testBitStringToInteger() {
        String bs = "00111111111111111111111111111110";
        int intVal = Integer.parseInt(bs, 2);
        log.info("intVal: {}", intVal);
    }

    @Test
    public void testIntegerToBitString() {
        String bs = Integer.toBinaryString(-2);
        log.info("bs: {}", bs);
    }
}
